const wx = require('weixin-js-sdk');
import {
    getJsApiSignatureJumpApp,
    codeGetOpenid,
    getJsApiSignatureShare
} from "api/appServe/applogin";
import common from "common/js/common";
export const WXmixins = {

    data() {
        return {
            mixStr: '这是混合的data字符串',
            appid: "wx3b543df581b4c3d7",
            wxDic: {},
            isLaunch: false,
            ourAppID: "wxc35f98e73bfb94f2"
        }
    },
    created() {
        // console.log('这就是mixin啊');
        // console.log(wx);
        if (common.isWeChat()) {
            this.recivedJsApiSignatureJumpApp()
        }

    },

    mounted() {

    },

    methods: {
        mixTextClick() {
            console.log('这是混合的测试点击方法');
        },
        //获取url参数
        getUrlKey(name) {
            return (
                decodeURIComponent(
                    (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
                        location.href
                    ) || [, ""])[1].replace(/\+/g, "%20")
                ) || null
            );
        },
        //获取code
        getCodeApi(state) {
            let data = {
                url: location.href
            };
            this.$toast(location.href);
            let urlNow = encodeURIComponent(window.location.href);
            let scope = "snsapi_userinfo"; //snsapi_userinfo  snsapi_base //静默授权 用户无感知
            let appid = this.appid;
            let url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=${state}#wechat_redirect`;
            window.location.replace(url);
        },
        //获取微信签名、时间戳
        recivedJsApiSignatureJumpApp() {
            var _this = this;
            getJsApiSignatureJumpApp(window.location.href).then(res => {
                console.log("获取jsapi结果：");
                console.log(res);
                if (res.code == 200) {
                    _this.wxDic = res.data;
                    _this.isLaunch = true;
                    wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印
                        appId: _this.appid, // 必填，公众号的唯一标识
                        timestamp: res.data.timestamp, // 必填，生成签名的时间戳
                        nonceStr: res.data.noncestr, // 必填，生成签名的随机串
                        signature: res.data.sign, // 必填，签名
                        jsApiList: ['checkJsApi'], // 必填，需要使用的JS接口列表
                        openTagList: ['wx-open-launch-app', 'wx-open-launch-weapp'] // 可选，需要使用的开放标签列表，例如['wx-open-launch-app']
                    });
                } else {
                    _this.isLaunch = false;
                    _this.$notify(res.code.message);
                }
            }).then(() => {
                console.log("wechatLaunchReady");
                this.wechatLaunchReady();
            })
                .catch((xhr, status, error) => {
                    console.log(error);
                    console.log("recivedJsApiSignatureJumpApp");
                    console.log(status);
                    console.log(xhr.responseText);
                });
        },

        //通过ready接口处理成功验证
        wechatLaunchReady() {
            wx.ready(function () {
                // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中
                console.log('ready')
                wx.checkJsApi({
                    jsApiList: ['wx-open-launch-app', 'wx-open-launch-weapp'], // 需要检测的JS接口列表，所有JS接口列表见附录2,
                    success: function (res) {
                        console.log(res, '可用')
                    },
                    fail: (err) => {
                        console.log(err, '不可用')
                    }
                })
            });

        },

        //通过error接口处理失败验证
        wechatLaunchErroe() {
            wx.error(function (err) {
                // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名
                console.log(err)
            });
        },
    },
};

export const WXOpenIdmixins = {

    data() {
        return {
            mixStr: '这是混合的data字符串',
            appid: "wx3b543df581b4c3d7",
            wxDic: {},
            isLaunch: false,
            ourAppID: "wxc35f98e73bfb94f2"
        }
    },
    created() {
        // console.log('这就是mixin啊');
        // console.log(wx);
        this.recivedJsApiSignatureJumpApp()
        var _this = this;
        if (common.isStringEmpty(_this.$localstore.get("hdOpenId"))) {
            this.$toast("没有公众号openID");
            if (common.isWeChat()) {
                let code = _this.getUrlKey("code");
                console.log('看看code:====');
                console.log(code);
                if (code) {
                    let data = {
                        code: code
                    };
                    this.wxcode = code;
                    codeGetOpenid(code).then(res => {
                        // this.$toast("code:" + res.code);
                        // this.wxcode = res.message
                        if (res.code == 200) {
                            // this.wxcode = res.data.openid;
                            this.$localstore.set("hdOpenId", newId, 604800);
                            //跳转当前页面并加上参数
                            // window.location.replace('https://swplus-test.shhd.info/hls/www/vueStatic/hdstaticvue/test/index.html#/apppayview')
                        } else {
                            this.$toast(res.message);
                            // window.location.replace("https://www.gamersky.com/");
                        }
                    });
                } else {
                    _this.getCodeApi("STATE");
                }
            } else {
                console.log("请在微信里打开");
                if (window.location.href.indexOf("dist") > -1) {
                    window.location.replace(
                        "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com&response_type=code&scope=snsapi_base&state=123#wechat_redirect"
                    );
                }
                //  window.location.replace("https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com&response_type=code&scope=snsapi_base&state=123#wechat_redirect");
            }
        }
    },

    mounted() {

    },

    methods: {

        mixTextClick() {
            console.log('这是混合的测试点击方法');
        },
        //获取url参数
        getUrlKey(name) {
            return (
                decodeURIComponent(
                    (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
                        location.href
                    ) || [, ""])[1].replace(/\+/g, "%20")
                ) || null
            );
        },
        //获取code
        getCodeApi(state) {
            let data = {
                url: location.href
            };
            this.$toast(location.href);
            let urlNow = encodeURIComponent(window.location.href);
            let scope = "snsapi_userinfo"; //snsapi_userinfo  snsapi_base //静默授权 用户无感知
            let appid = this.appid;
            let url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=${state}#wechat_redirect`;
            window.location.replace(url);
        },
        //获取微信签名、时间戳
        recivedJsApiSignatureJumpApp() {
            var _this = this;
            getJsApiSignatureJumpApp(window.location.href).then(res => {
                console.log("获取jsapi结果：");
                console.log(res);
                if (res.code == 200) {
                    _this.wxDic = res.data;
                    _this.isLaunch = true;

                    wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印
                        appId: _this.appid, // 必填，公众号的唯一标识
                        timestamp: res.data.timestamp, // 必填，生成签名的时间戳
                        nonceStr: res.data.nonceStr, // 必填，生成签名的随机串
                        signature: res.data.sign, // 必填，签名
                        jsApiList: ["checkJsApi", "chooseWXPay"], // 必填，需要使用的JS接口列表
                        openTagList: ['wx-open-launch-app', 'wx-open-launch-weapp'] // 可选，需要使用的开放标签列表，例如['wx-open-launch-app']
                    });

                } else {
                    _this.isLaunch = false;
                    _this.$notify(res.code.message);
                }
            })
        },

        //通过ready接口处理成功验证
        wechatLaunchReady() {
            wx.ready(function () {
                // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中
            });

        },

        //通过error接口处理失败验证
        wechatLaunchErroe() {
            wx.error(function (res) {
                // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名
            });
        },
    },
};
export const WXSharemixins = {
    data() {
        return {
            sharetitle: this.$route.meta.title || '十万个创始人',
            sharedesc: "链接人脉，看见更大的世界",
            sharefullDesc: "十万个创始人分享",
            sharelink: "",
            shareimgUrl: "http://cdn.shhd.info/APP/sys_img/logo-fang.jpg",
        }
    },
    created() {
        console.log(this.sharetitle);

    },
    mounted() {
        if (common.isWeChat()) {
            // console.log(this.$route.path);
            // console.log(this.$route.query);
            let querykeys = Object.keys(this.$route.query)
            let queryvalues = Object.values(this.$route.query)
            // fromUserId,hdcd,this.$localstore.get("hdUserId")
            this.sharelink = window.location.href.split("#")[0] + '#' + this.$route.path + '?';
            if (querykeys.length == 0) {
                // this.sharelink                    
                if (!common.isStringEmpty(this.$localstore.get("hdUserId"))) {
                    this.sharelink += 'fromUserId=' + this.$localstore.get("hdUserId")
                }

            } else {
                // this.sharelink = window.location.href.split("#")[0] + '#' + this.$route.path + '?';
                let tempkey;
                let tempvalue;
                if (querykeys.includes('fromUserId') || querykeys.includes('hdcd')) {
                    for (let i = 0; i < querykeys.length; i++) {
                        tempvalue = queryvalues[i]
                        if (i == 0) {
                            tempkey = querykeys[i]
                        } else {
                            tempkey = "&" + querykeys[i]
                        }
                        if (!common.isStringEmpty(this.$localstore.get("hdUserId"))) {
                            if (querykeys[i] == 'fromUserId' || querykeys[i] == 'hdcd') {
                                if (i == 0) {
                                    tempkey = 'fromUserId'
                                } else {
                                    tempkey = "&" + 'fromUserId';
                                }
                                tempvalue = this.$localstore.get("hdUserId")
                            }
                        }

                        this.sharelink += tempkey + '=' + tempvalue
                    }
                } else {
                    for (let i = 0; i < querykeys.length; i++) {
                        console.log(1);
                        tempvalue = queryvalues[i]
                        if (i == 0) {
                            tempkey = querykeys[i]
                        } else {
                            tempkey = "&" + querykeys[i]
                        }
                        this.sharelink += tempkey + '=' + tempvalue
                    }
                    if (!common.isStringEmpty(this.$localstore.get("hdUserId"))) {
                        this.sharelink += '&fromUserId=' + this.$localstore.get("hdUserId")
                    }
                }
            }

            this.sharefullDesc = this.sharetitle + this.sharedesc
            this.$nextTick(() => {
                this.recivedJsApiSignatureShare(this.sharetitle, this.sharedesc, this.sharefullDesc, this.sharelink, this.shareimgUrl)
            });
        }
    },
    methods: {
        // 获取微信签名、时间戳 微信分享
        recivedJsApiSignatureShare(title, desc, fullDesc, link, imgUrl) {
            console.log(title, desc, fullDesc, link, imgUrl, 'recivedJsApiSignatureShare');
            var _this = this;
            getJsApiSignatureShare(window.location.href.split("#")[0])
                .then((res) => {
                    console.log("获取jsapi结果：");
                    console.log(res);
                    // alert(JSON.stringify(res));
                    if (res.code == 200) {
                        _this.wxDic = res.data;
                        _this.isLaunch = true;
                        wx.config({
                            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印
                            appId: res.data.appid, // 必填，公众号的唯一标识
                            timestamp: res.data.timestamp, // 必填，生成签名的时间戳
                            nonceStr: res.data.nonceStr, // 必填，生成签名的随机串
                            signature: res.data.signature, // 必填，签名
                            jsApiList: [
                                "checkJsApi", // 必填，需要使用的JS接口列表
                                "onMenuShareTimeline",
                                "onMenuShareAppMessage",
                                "updateAppMessageShareData", //分享给好友
                                "updateTimelineShareData", //分享到朋友圈
                            ],
                            // openTagList: ["wx-open-launch-app", "wx-open-launch-weapp"], // 可选，需要使用的开放标签列表，例如['wx-open-launch-app']
                        });
                    } else {
                        _this.isLaunch = false;
                        _this.$notify(res.code.message);
                    }
                })
                .then(() => {
                    console.log("wechatLaunchReady");
                    this.wechatLaunchReady(title, desc, fullDesc, link, imgUrl);
                })
                .catch((xhr, status, error) => {
                    console.log(error);
                    console.log("recivedJsApiSignatureShare");
                    console.log(status);
                    console.log(xhr.responseText);
                });
        },
        //通过ready接口处理成功验证
        wechatLaunchReady(title, desc, fullDesc, link, imgUrl) {
            wx.ready(function () {
                wx.checkJsApi({
                    jsApiList: [
                        "onMenuShareTimeline",
                        "onMenuShareAppMessage",
                        "updateAppMessageShareData", //分享给好友
                        "updateTimelineShareData", //分享到朋友圈
                    ], // 需要检测的JS接口列表，所有JS接口列表见附录2,
                    success: function (res) {
                        // 以键值对的形式返回，可用的api值true，不可用为false
                        // 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
                    },
                });
                // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中
                // var protocol = window.location.protocol;
                // var host = window.location.host;
                //分享朋友圈
                wx.onMenuShareTimeline({
                    title: fullDesc, // 分享标题
                    link, // 分享链接
                    imgUrl, // 分享图标
                    trigger: function (res) {
                        // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容，因为客户端分享操作是一个同步操作，这时候使用ajax的回包会还没有返回.
                        //alert('click shared');
                    },
                    success: function (res) {
                        console.log("shared success");
                        //some thing you should do
                    },
                    fail: function (res) {
                        console.log("wechatLaunchReady fail");
                        console.log(JSON.stringify(res));
                    },
                });
                //分享给好友
                wx.onMenuShareAppMessage({
                    title, // 分享标题
                    desc, // 分享描述
                    link, // 分享链接
                    imgUrl, // 分享图标
                    type: "link", // 分享类型,music、video或link，不填默认为link
                    dataUrl: "", // 如果type是music或video，则要提供数据链接，默认为空
                    success: function (res) {
                        // 用户确认分享后执行的回调函数
                        console.log(res);
                        console.log("shared success");
                        //some thing you should do
                    },
                    fail: function (res) {
                        console.log(res);
                        console.log("wechatLaunchReady fail");
                        console.log(JSON.stringify(res));
                    },
                });
                //分享朋友圈
                wx.updateTimelineShareData({
                    title: fullDesc, // 分享标题
                    link, // 分享链接
                    // 分享图标
                    imgUrl,
                    trigger: function (res) {
                        // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容，因为客户端分享操作是一个同步操作，这时候使用ajax的回包会还没有返回.
                        //alert('click shared');
                    },
                    success: function (res) {
                        console.log("shared success");
                        //some thing you should do
                    },
                    fail: function (res) {
                        console.log("wechatLaunchReady fail");
                        console.log(JSON.stringify(res));
                    },
                });
                //分享给好友
                wx.updateAppMessageShareData({
                    title, // 分享标题
                    desc, // 分享描述
                    link, // 分享链接
                    imgUrl, // 分享图标
                    // type: "link", // 分享类型,music、video或link，不填默认为link
                    // dataUrl: "", // 如果type是music或video，则要提供数据链接，默认为空
                    success: function (res) {
                        // 用户确认分享后执行的回调函数
                        console.log(res);
                        console.log("shared success");
                        //some thing you should do
                    },
                    fail: function (res) {
                        console.log(res);
                        console.log("wechatLaunchReady fail");
                        console.log(JSON.stringify(res));
                    },
                });

                wx.error(function (res) {
                    console.log("wechatLaunchReady error");
                    console.log(res.errMsg);
                });
            });
        },

        //通过error接口处理失败验证
        wechatLaunchErroe() {
            wx.error(function (res) {
                // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名
            });
        },
    },
};